<?php
//conecta ao banco de dados
require_once("conexao.php");

function inseriItemDeslocado ($idPai, $fk_processo, $desc, $num)
{
	if ($idPai == '' || $idPai == 0)
		$idPai = "NULL";
	if ($fk_processo == '' || $fk_processo == 0)	
		$fk_processo = "NULL";
		
	$sql = "INSERT INTO fluxo (fk_pai, fk_processo, descricao, numeracao) VALUES ($idPai, $fk_processo, '$desc', '$num')";
	
	//die ($sql);
	$rs 	= mysql_query($sql); 
	
	return $rs;
}

function inseriItem ($desc, $fk_processo, $num)
{
	$sql = "INSERT INTO fluxo (fk_pai, fk_processo, descricao, numeracao) VALUES (NULL, $fk_processo, '$desc', '$num')";
	//die ($sql);
	$rs 	= mysql_query($sql); 
	
	return $rs;
}
function inseriSubItem ($desc, $idPai, $num)
{
	$sql = "INSERT INTO fluxo (fk_pai, fk_processo, descricao, numeracao) VALUES ($idPai, NULL, '$desc', '$num')";
	//die ($sql);
	$rs 	= mysql_query($sql); 
	
	return $rs;
}

function atualizaItem ($idItem, $desc, $numeracao)
{
	$sql = "UPDATE fluxo set numeracao = $numeracao, descricao = '$desc'
	where idFluxo = $idItem";
	
	$rs 	= mysql_query($sql); 
	
	return $rs;
}
function atualizaDescItem ($idItem, $desc)
{
	$sql = "UPDATE fluxo set descricao = '$desc'
	where idFluxo = $idItem";
	
	$rs 	= mysql_query($sql); 
	
	return $rs;
}

function obterPaiItem ($idItem)
{	
	$sql = "select p.*  from fluxo f, fluxo p 
where f.idFluxo = $idFluxo and f.fk_pai = p.idFluxo";	   
	$rs 	= mysql_query($sql); 
	
	if ($rs) {
		$dados	= mysql_fetch_array($rs);
		return $dados;
	}
	return false;
}

function obterItensProcesso ($idProcesso)
{
	$sql = "select * from fluxo where fluxo.fk_processo = $idProcesso order by numeracao, idFluxo";	   
	$rs	= mysql_query($sql); 

	return $rs;
}

function proxItemProcesso ($idProc)
{
	$sql = "select MAX(numeracao) num from fluxo where fluxo.fk_processo = $idProc and fk_pai is NULL";
	$rs 	= mysql_query($sql); 
	
	if ($rs) {
		$dados	= mysql_fetch_array($rs);
		return $dados['num'] + 1;
	}
	
	return 1;	
}

function proxSubitem ($idItem)
{
	$sql = "select MAX(numeracao) num from fluxo where fk_pai = $idItem";
	$rs 	= mysql_query($sql); 
	
	if ($rs) {
		$dados	= mysql_fetch_array($rs);
		return $dados['num'] + 1;
	}
	
	return 1;	
}

function obterNumItem ($idItem)
{
	$sql = "select numeracao from fluxo where idFluxo = $idItem";
	$rs 	= mysql_query($sql); 
	
	if ($rs) {
		$dados	= mysql_fetch_array($rs);
		return $dados['numeracao'];
	}
	
	return false;	
}

function obterFilhosItem ($idItem)
{
	if ($idItem == NULL || $idItem == 0)
    	$sql = "select * from fluxo where fluxo.fk_pai is NULL order by numeracao, idFluxo";	  
    else
        $sql = "select * from fluxo where fluxo.fk_pai = $idItem order by numeracao, idFluxo";	   

	$rs	= mysql_query($sql); 

	return $rs;
}
//Lista os itens do msm Nivel que estao abaixo 
function obterItensMsmNivelAbaixo ($idPai, $numeracao)
{
	if ($idPai == NULL || $idPai == 0)
    	$sql = "select * from fluxo where fluxo.fk_pai is NULL and numeracao > $numeracao order by numeracao";	  
    else
    	$sql = "select * from fluxo where fluxo.fk_pai = $idPai and numeracao > $numeracao order by numeracao";	   

	$rs	= mysql_query($sql); 

	return $rs;
}

function excluiItem($idItem)
{
	$sql = "delete from fluxo where fluxo.idFluxo = $idItem";	   
	$rs 	= mysql_query($sql); 
	
	return $rs;
}

//Retorna dados da unidade
function obterFluxo ($idFluxo)
{
	$sql = "select * from fluxo where fluxo.idFluxo = $idFluxo";
	//die ($sql );
	$rs 	= mysql_query($sql); 

	return $rs;
}

function obterDescItem ($idFluxo)
{
	$sql = "select fluxo.descricao from fluxo where fluxo.idFluxo = $idFluxo";
	
	$rs 	= mysql_query($sql); 
	
	if ($rs) {
		$dados	= mysql_fetch_array($rs);
		return $dados['descricao'];
	}
	
	return $rs;
}

function imprimiItens ($dados, $nivel, $numPai, $edita)
{		

	$num = 1;
	
	while($linha = mysql_fetch_array($dados)) 
	{	
		$desc = htmlspecialchars($linha['descricao']);
		//$num = $linha['numeracao'];

		if ($numPai != "")
			$numero = $numPai.".".$num;
		else
			$numero = $num;
			
	    $id = $linha['idFluxo'];
		
		for ($i=0; $i < $nivel; ++$i) { echo "&nbsp;&nbsp;&nbsp;"; }
   		
		echo "<tr><td align=\"justify\">";
			
		echo "<b>".$numero.")</b> <font color=\"#999900\">".$desc."</font>";
		
		//Mostra botão exluir item
		if ($edita) {
			echo "&nbsp;&nbsp;<a href=\"javascript:;setDados($id,2,'$numero')\">Editar</a>";	
			echo "&nbsp;&nbsp;<a href=\"javascript:;setDados($id,3,'')\">Excluir</a><br>";
		}
		else
			echo "<br></td></tr>";
		
		$filhos = obterFilhosItem ($id);
		$qt = mysql_num_rows ($filhos );
		$prox = $nivel + 1;
		
		//Se item tiver filhos imprimi seus filhos
		if ($qt > 0) {	imprimiItens ($filhos, $prox, $numero, $edita);	}
		
		$num++;
	}
}
function deslocaItensDoMsmNivel ($idPai, $numeracao, $deslocamento)
{
	//Obtem todos itens abaixo dele pra deslocar para baixo tbm
	$rsItensMsmNivel = obterItensMsmNivelAbaixo ($idPai, $numeracao);
	
	//Percorre os outros itens abaixo dele
	while ($linha = mysql_fetch_array($rsItensMsmNivel)) {
		//Desloca item para baixo			
		$retorno = atualizaItem ($linha['idFluxo'], $linha['descricao'], ($deslocamento + $linha['numeracao']));
	}
}


function importarFluxoProcesso ($idProcesso, $idProcNovo)
{
	$rs = false;
	$fluxo = obterItensProcesso ($idProcesso);

	while ($linha = mysql_fetch_array($fluxo)) 
	{
		$rs = inseriItem ($linha['descricao'], $idProcNovo, $linha['numeracao']);
		
		//importaSubitem ();
	}
	
	return $rs;
}


?>